Central Limit Theorem

Author

Bryan

Published

August 17, 2022

Code
using Pluto
using Random;
using Distributions;
using Plots;
using AverageShiftedHistograms;
function get_normals(samples::Vector{Float64})
    means = zeros(0)
    vars = zeros(0)
    for i in 1:length(samples)
        append!(means, mean(samples[1:i]))
        if (i > 1)
            append!(vars, var(samples[1:i]))
        end
    end
    return means, vars
end
function central_limit_theorem(N::Integer, d::Any)
    x = rand(d, N)
    μ, σ = get_normals(x)
    return x, μ, σ
end
Code
n = 1000
M = 5

Logistic Distribution

Sample From a Logistic Distribution

Code
dist = Logistic()
x, μ, σ = central_limit_theorem(n, dist);
anim = @animate for i = 1:10:n
     plot(x[1:i], pdf(dist, x[1:i]), seriestype = :scatter, xlabel="Random Samples", title=("Samples: $(dist) Distribution \nn="*string(i)), lab=nothing)
end

display(gif(anim));

Figure 1: Random Samples from a Logistic Distribution

Take Mean Of Random Samples from a Logistic Distribution, Iteratively

Code
dist = Logistic()
x, μ, σ = central_limit_theorem(n, dist);
anim = @animate for i = 1:10:n
     o = ash(μ[1:i]; rng = -4:.1:4, m=M)
     plot(o, xlabel="Mean Of The Random Samples", title=("Mean Of Samples Plotted When\nn="*string(i)), lab=nothing)
end

display(gif(anim));

Figure 2: Mean Of Samples from a Logistic Distribution

Cosine Distribution

Sample From a Cosine Distribution

Code
dist = Cosine()
x, μ, σ = central_limit_theorem(n, dist);
anim = @animate for i = 1:10:n
     plot(x[1:i], pdf(dist, x[1:i]), seriestype = :scatter, xlabel="Random Samples", title=("Samples: $(dist) Distribution \nn="*string(i)), lab=nothing)
end

display(gif(anim));

Figure 3: Random Samples from a Cosine Distribution

Take Mean Of Random Samples from a Cosine Distribution, Iteratively

Code
dist = Cosine()
x, μ, σ = central_limit_theorem(n, dist);
anim = @animate for i = 1:10:n
     o = ash(μ[1:i]; rng = -4:.1:4, m=M)
     plot(o, xlabel="Mean Of The Random Samples", title=("Mean Of Samples Plotted When\nn="*string(i)), lab=nothing)
end

display(gif(anim));

Figure 4: Mean Of Samples from a Cosine Distribution

Uniform Distribution

Sample From a Uniform Distribution

Code
dist = Uniform()
x, μ, σ = central_limit_theorem(n, dist);
anim = @animate for i = 1:10:n
     plot(x[1:i], pdf(dist, x[1:i]), seriestype = :scatter, xlabel="Random Samples", title=("Samples: $(dist) Distribution \nn="*string(i)), lab=nothing)
end

display(gif(anim));

Figure 5: Random Samples from a Uniform Distribution

Take Mean Of Random Samples from a Uniform Distribution, Iteratively

Code
dist = Uniform()
x, μ, σ = central_limit_theorem(n, dist);
anim = @animate for i = 1:10:n
     o = ash(μ[1:i]; rng = -4:.1:4, m=M)
     plot(o, xlabel="Mean Of The Random Samples", title=("Mean Of Samples Plotted When\nn="*string(i)), lab=nothing)
end

display(gif(anim));

Figure 6: Mean Of Samples from a Uniform Distribution

Exponential Distribution

Sample From a Exponential Distribution

Code
dist = Exponential()
x, μ, σ = central_limit_theorem(n, dist);
anim = @animate for i = 1:10:n
     plot(x[1:i], pdf(dist, x[1:i]), seriestype = :scatter, xlabel="Random Samples", title=("Samples: $(dist) Distribution \nn="*string(i)), lab=nothing)
end

display(gif(anim));

Figure 7: Random Samples from a Exponential Distribution

Take Mean Of Random Samples from a Exponential Distribution, Iteratively

Code
dist = Exponential()
x, μ, σ = central_limit_theorem(n, dist);
anim = @animate for i = 1:10:n
     o = ash(μ[1:i]; rng = -4:.1:4, m=M)
     plot(o, xlabel="Mean Of The Random Samples", title=("Mean Of Samples Plotted When\nn="*string(i)), lab=nothing)
end

display(gif(anim));

Figure 8: Mean Of Samples from a Exponential Distribution

Arcsine Distribution

Sample From a Arcsine Distribution

Code
dist = Arcsine()
x, μ, σ = central_limit_theorem(n, dist);
anim = @animate for i = 1:10:n
     plot(x[1:i], pdf(dist, x[1:i]), seriestype = :scatter, xlabel="Random Samples", title=("Samples: $(dist) Distribution \nn="*string(i)), lab=nothing)
end

display(gif(anim));

Figure 9: Random Samples from a Arcsine Distribution

Take Mean Of Random Samples from a Arcsine Distribution, Iteratively

Code
dist = Arcsine()
x, μ, σ = central_limit_theorem(n, dist);
anim = @animate for i = 1:10:n
     o = ash(μ[1:i]; rng = -4:.1:4, m=M)
     plot(o, xlabel="Mean Of The Random Samples", title=("Mean Of Samples Plotted When\nn="*string(i)), lab=nothing)
end

display(gif(anim));

Figure 10: Mean Of Samples from a Arcsine Distribution

Beta Distribution

Sample From a Beta Distribution

Code
dist = Beta()
x, μ, σ = central_limit_theorem(n, dist);
anim = @animate for i = 1:10:n
     plot(x[1:i], pdf(dist, x[1:i]), seriestype = :scatter, xlabel="Random Samples", title=("Samples: $(dist) Distribution \nn="*string(i)), lab=nothing)
end

display(gif(anim));

Figure 11: Random Samples from a Beta Distribution

Take Mean Of Random Samples from a Beta Distribution, Iteratively

Code
dist = Beta()
x, μ, σ = central_limit_theorem(n, dist);
anim = @animate for i = 1:10:n
     o = ash(μ[1:i]; rng = -4:.1:4, m=M)
     plot(o, xlabel="Mean Of The Random Samples", title=("Mean Of Samples Plotted When\nn="*string(i)), lab=nothing)
end

display(gif(anim));

Figure 12: Mean Of Samples from a Beta Distribution